from Common.Pic2Base64 import image_to_base64
from Common.Pic2MD5 import get_file_md5
from Common.GetGuotieMenu import getGuotieMenu
from Business.txApi import getPicContext
from Business.webhooktest import sendMes,sendPicMenu
from Common.GetGuotieMenu import showEverydayMenu
from Common.getWeekday import get_weekday
import schedule
from apscheduler.schedulers.background import BackgroundScheduler
import time

# 首先，我们定义一个主题接口，它包含一个方法用于注册、注销和通知观察者。
class Subject:
    def __init__(self):
        self._observers = []

# 注册观察者方法
    def register_observer(self, observer):
        if observer not in self._observers:
            self._observers.append(observer)

# 注销
    def unregister_observer(self, observer):
        if observer in self._observers:
            self._observers.remove(observer)

# 通知
    def notify_observers(self, file_path):
        for observer in self._observers:
            observer.update(file_path)

class ApsClass:
    def job(self):
        print("执行任务...")

    def start_scheduler(self):
        scheduler = BackgroundScheduler()
        scheduler.add_job(self.job, 'cron', hour=11, minute=56)
        scheduler.start()

# 然后，我们定义一个观察者接口，它包含一个update方法，该方法将在主题状态改变时被调用。
class Observer:
    def update(self, file_path):
        pass  # 抽象方法，具体实现在子类中

# 接下来，我们创建一个具体的观察者类，它实现了Observer接口，并定义了当新图片文件名被通知时应该执行的操作。
class ImageObserver(Observer,ApsClass):
    picList = []
    picBase64 = None
    picMD5 = None
    payload = ''
    meanuMessage = ''
    def job(self):
        meanuMessage=self.meanuMessage
        sendMes(meanuMessage)
    def update(self, file_path):

        # 在这里可以执行其他操作，比如存储文件名、发送通知等
        self.picList.append(file_path)
        self.picBase64 = image_to_base64(self.picList[-1])
        self.payload = "{\"ImageBase64\":\"data:image/png;base64,"+self.picBase64+"\"}"
        self.picMD5 = get_file_md5(self.picList[-1])
        everydayMenu = showEverydayMenu(getGuotieMenu(getPicContext(self.payload),get_weekday()))
        # meanuMessage = '今天是 : ' + everydayMenu[0]+' , 午餐 : '+' , '.join(str(item) for item in everydayMenu[2:7])+' , 汤 : '+everydayMenu[7]+' , 晚餐 : '+everydayMenu[8]
        self.meanuMessage = '今天是 : ' + everydayMenu[0]+' , \n午餐 : '+' , '.join(str(item) for item in everydayMenu[2:7])+' , \n汤 : '+everydayMenu[7]
        # 每当放入一张菜单，机器人发送的消息
        sendMes("请预览本周菜单~\n我将在每天11:55推送今日菜单\n干饭不积极,思想出问题~~")
        sendPicMenu(self.picBase64,self.picMD5)
        # schedule.every(3).seconds.do(self.job)
        self.start_scheduler()



# # 使用示例
# my_instance = MyClass()
# my_instance.start_scheduler()
